package com.demon.framework.common;

import java.util.Collection;
import java.util.Map;

/**
 * Ognl工具类
 * <p>
 * 主要是为了在ognl表达式访问静态方法时可以减少长长的类名称编写 Ognl访问静态方法的表达式
 * </p>
 *
 * <pre>
 * 	&lt;if test=&quot;@com.zxt.framework.utils.Ognl@isNotEmpty(userId)&quot;&gt;
 * 	and user_id = #{userId}
 * &lt;/if&gt;
 * </pre>
 *
 * @author  Demon-HY
 * @date 2020/8/23 12:21
 */
public class Ognl {
    /**
     * 可以用于判断 Map,Collection,String,Array,Long是否为空
     *
     * @param o java.lang.Object.
     * @return boolean.
     */
    public static boolean isEmpty(Object o) throws IllegalArgumentException {
        if (o == null) {
            return true;
        }
        if (o instanceof String) {
            return ((String) o).trim().length() == 0;
        } else if (o instanceof Collection) {
            return ((Collection) o).isEmpty();
        } else if (o.getClass().isArray()) {
            return ((Object[]) o).length == 0;
        } else if (o instanceof Map) {
            return ((Map) o).isEmpty();
        } else if (o instanceof Long) {
            return false;
        } else if (o instanceof Short) {
            return false;
        } else {
            return false;
        }
    }

    /**
     * 可以用于判断 Map,Collection,String,Array是否不为空
     */
    public static boolean isNotEmpty(Object o) {
        return !isEmpty(o);
    }

    /**
     * 可以用于判断Long类型是否不为空
     */
    public static boolean isNotEmpty(Long o) {
        return !isEmpty(o);
    }

}
